package com.pe.pgn.clubpgn.domain;
  
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.hibernate.annotations.Type;
import org.springframework.format.annotation.DateTimeFormat;

@Entity
@Table(name = "clpd_flota")
public class ClpdFlota extends CamposAuditoria {

	private static final long serialVersionUID = 8414282118295633905L;
	private Long id;
	private String deFlotaArea;
	private ClpbClienteEmpresa clpbClienteEmpresa;
	private boolean stFlota;
	private String dePrefijo;
	private String deSufijo;
	private Long vaTamano;
	private List<ClprFlotaVehiculo> flotaVehiculos;

	private BigDecimal vaCuota;
	private boolean stCuota;
	
    @Id
    @Column(name="id")
    @SequenceGenerator(name="seqflota", sequenceName="seq_flota")
    @GeneratedValue(generator="seqflota")   
	public Long getId() {
		return id;
	}

    @Column(name = "de_flota_area", nullable = false, length = 50)
	public String getDeFlotaArea() {
		return deFlotaArea;
	}

    @ManyToOne(targetEntity = ClpbClienteEmpresa.class)
    @JoinColumn(name="co_cliente_empresa", nullable = false)
	public ClpbClienteEmpresa getClpbClienteEmpresa() {
		return clpbClienteEmpresa;
	}

    @Column(name = "st_flota", nullable = false)
	@Type(type = "yes_no") 
	public boolean isStFlota() {
		return stFlota;
	}

    @Column(name = "co_usuario_creador", updatable = false, nullable = false, length = 30)
	public String getCoUsuarioCreador() {
		return coUsuarioCreador;
	}

    @Column(name = "da_fecha_creacion", updatable = false, nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaCreacion() {
		return daFechaCreacion;
	}

	@Column(name = "co_usuario_modificador", length = 30)
	public String getCoUsuarioModificador() {
		return coUsuarioModificador;
	}

    @Column(name = "da_fecha_modificacion")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaModificacion() {
		return daFechaModificacion;
	}    

	public void setId(Long id) {
		this.id = id;
	}

	public void setDeFlotaArea(String deFlotaArea) {
		this.deFlotaArea = deFlotaArea;
	}

	public void setClpbClienteEmpresa(ClpbClienteEmpresa clpbClienteEmpresa) {
		this.clpbClienteEmpresa = clpbClienteEmpresa;
	}

	public void setStFlota(boolean stFlota) {
		this.stFlota = stFlota;
	}

	@Column(name = "va_cuota", nullable = true, precision = 10, scale = 2)
	public BigDecimal getVaCuota() {
		return vaCuota;
	}

	public void setVaCuota(BigDecimal vaCuota) {
		this.vaCuota = vaCuota;
	}

	@Column(name = "st_cuota", nullable = false)
	@Type(type = "yes_no") 
	public boolean isStCuota() {
		return stCuota;
	}

	public void setStCuota(boolean stCuota) {
		this.stCuota = stCuota;
	}

	@Transient
	public String getDePrefijo() {
		return dePrefijo;
	}

	public void setDePrefijo(String dePrefijo) {
		this.dePrefijo = dePrefijo;
	}

	@Transient
	public String getDeSufijo() {
		return deSufijo;
	}

	public void setDeSufijo(String deSufijo) {
		this.deSufijo = deSufijo;
	}

	@Transient
	public Long getVaTamano() {
		return vaTamano;
	}

	public void setVaTamano(Long vaTamano) {
		this.vaTamano = vaTamano;
	}	
	
	@Transient
	public List<ClprFlotaVehiculo> getFlotaVehiculos() {
		return flotaVehiculos;
	}

	public void setFlotaVehiculos(List<ClprFlotaVehiculo> flotaVehiculos) {
		this.flotaVehiculos = flotaVehiculos;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	@Override
	public boolean equals(Object o) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public String toString() {
		return "ClpdFlota [id=" + id + ", deFlotaArea=" + deFlotaArea
				+ ", stFlota=" + stFlota + ", dePrefijo=" + dePrefijo
				+ ", deSufijo=" + deSufijo + ", vaTamano=" + vaTamano
				+ ", vaCuota=" + vaCuota + ", stCuota=" + stCuota + "]";
	}
}
